//****************************************Copyright (c)***********************************//
//Copyright(C) 写的bug都队 2023-2033
//All rights reserved                                  
//----------------------------------------------------------------------------------------
// File name:           rmii_rx
// Last modified Date:  2023/11/9
// Last Version:        V2.0
// Descriptions:        以太网物理层接收数据
//----------------------------------------------------------------------------------------
// Author :             写的bug都队
// Created date:        2023/10/22
//****************************************************************************************//

//*****************************************************
//**        以太网待接收数据: 2bit -> 8bit
//*****************************************************

module rmii_rx(
    input clk50m,                     //输入50M时钟
    input phy_rdy,                    //phy就绪
    input crs,                        //数据输入有效
    input [1:0] rxd,                  //RMII数据接收

    output reg rmii_data_en,          //数据有效
    output reg [7:0] rx_data_s       //转换后的数据
);

reg rx_cnt;             //前导码检测计数器
reg [7:0] tick;         //8bit拼接计数器

//接收数据拼接 2bit -> 8bit
always @(posedge clk50m or negedge phy_rdy) begin
    if(!phy_rdy)begin  //复位
        tick <= 8'd0;
        rmii_data_en <= 8'd0;
    end else begin
        if(crs)begin
            if(tick == 3) begin
                rmii_data_en <= 8'd1;                   //tick为0的时候数据有效
            end else begin
                rmii_data_en <= 8'd0;
            end
            tick <= tick + 8'd1;
            rx_data_s <= {rxd,rx_data_s[7:2]};          //数据移位传入
            if(tick == 3) begin
                tick <= 8'd0;                           //tick计数，每4个tick表示4个2bit数据成功移位到8bit的rx_data_s
            end                 
            //一个8bit数据拼接完成判断
        end
        if(crs == 1'b0)begin                            //不接收时的复位
            rx_data_s <= 8'b00XXXXXX;
        end 
    end
end


endmodule